<!DOCTYPE html>
<html lang="zh-CN" dir="ltr">
<head><script src="/information/public/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=information/public/livereload" data-no-instant defer></script>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="一：关于需求评审#​	产品首先会接到一些需求，或者自己提一些需求，然后与技术主管开会，将需求派发给对应的开发人员。最终以文档的形式记录需求的生命周期（Excel），包括计划开发开始时间，完成时间，需求的状态，负责人，任务说明等。开发人员自己根据实际的开发进度去更新该记录表。
​	开发人员在确认自己的开发任务之后，需要与产品进行一场需求评审会议。该会议主要是确认需求，了解产品想要做的是什么以及评估需求的合理性。
​	在接到开发任务到进行需求评审会议这段时间，我认为是非常重要的，直接决定了该次迭代你是否能正常完成。
​	首先，必须得认认真真看完需求原型图，了解到自己的开发任务是什么。这一阶段的产出是对对自己负责的相关原型图，任务要非常了解，了解到每一个细节。可以不知道是什么意思，但是得清楚有这个任务，有这个要求。
​	其次，作为一个新手，对系统代码并不是很熟的前提下，需要去看每一个需求相关的代码。这一阶段的产出是需要结合旧的代码，对新需求有一个基本的实现思路，实现方案。此时也大致可以评估出需求是否合理。
​	尽量在正式开需求评审会议的时候，把上面两边走踏实。在上面两个过程中，有什么疑问便可以记录下来，在需求评审会议上提出。需求评审会议过后，需要对原型图，任务彻底的了解。该阶段的产出分别是对需求的彻底了解，包括每一个细节，每一个要求以及每一个需求的大致实现方案。
二：关于方案设计#​	当需求评审过后，就需要做方案设计。一般是通过流程图，时序图，类图来描述一个方案。当然也可以直接用文字。重点是描述清楚，减少沟通成本，让人一目了然。
​	关于方案设计，主要有以下几个部分
1.方案基本的信息，包括版本号，作者，创建时间等
2.目录
3.正文
​	（1）背景&mdash;-需求背景
​	（2）目标（需求的意义）
​	（3）前期准备
​	①需求分析&mdash;-通过需求评审会议，确定有哪些需求（功能点）
​	②技术调研&mdash;-一般可以不写，除非要用到新技术
（4）系统设计
​	①用例图&mdash;一般可以不写
​	②流程设计&mdash;&ndash;指的是调用流程，比如A调用B，B返回什么，然后A再拿这个值包装后，再去调用C，C再返回给A，A显示给前端。主要是展示出步骤流程。
​	③功能设计&mdash;指的是具体实现方案，比如新增什么字段，逻辑如何实现，主要展示出代码的设计&ndash;》可直接映射到代码逻辑
​	④数据模型设计&mdash;数据库的修改
​	⑤接口设计&mdash;新加哪些接口，删除哪些接口，哪些接口被修改等。
（5）性能评估（有哪些性能瓶颈）
（6）业务影响范围评估（对于测试来说很重要，测试要点）
（7）安全性评估
（8）评审意见
三：关于方案评审#方案设计完会开一个评审会议，评估方案的合理性，方案评审完才会进入开发阶段。在该会上，会被多位大佬质疑你的方案，所以需求评审上，一定需要对需求了解透彻，这样才能来回battle。
四：关于代码开发与测试
在代码开发阶段，开发人员在该版本迭代的开发分支上进行开发。本地开发完成后，先在本地进行单元测试，等得到前后端都开发完成后，再push远程仓库，通过jenkins部署项目，进行联调开发环境测试。等到了正式的测试阶段，并发一封提测邮件，里面记录了要提测的分支以及相关要修改的数据库，阿波罗配置等，供测试参考。开发人员需要在此阶段，将开发分支的代码合到测试分支。在正式提测前，开发人员内部会进行开发冒烟测试，主要是将自己负责的部分功能演示一遍，确认功能没问题。
​	以下是各个阶段需要注意的点：
​	在开发阶段，开发环境可能会被占用，生产需要hotfix，开发环境的版本回退到上一版本进行测试，同理测试也是。此时需要注意，不能上开发联调环境部署测试本版本的代码。此时需要注意：尽量先不要上传该版本的代码，避免未经过开发联调测试的代码，被合并到测试环境的分支，导致测试环境的代码出问题，阻塞测试。
​	在测试阶段，当天提交到开发联调环境的代码，必须要在当天测试完毕，确保没问题，否则同事可能会将未经过测试的代码，合并到测试分支（同事修改的代码已经测试过，没问题，需要合并到测试分支，但是该分支上有你未测试的代码）
​	在最后测试封板阶段，或者说在整个测试阶段，都需要检查自己的代码是否合并到测试分支，保证自己的代码能够被测试到以及能够正常上线。（尤其是hotfix阶段的代码，一定要合并到测试分支，否则生产环境会出现问题）">
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#343a40">
<meta name="color-scheme" content="light dark"><meta property="og:title" content="" />
<meta property="og:description" content="一：关于需求评审#​	产品首先会接到一些需求，或者自己提一些需求，然后与技术主管开会，将需求派发给对应的开发人员。最终以文档的形式记录需求的生命周期（Excel），包括计划开发开始时间，完成时间，需求的状态，负责人，任务说明等。开发人员自己根据实际的开发进度去更新该记录表。
​	开发人员在确认自己的开发任务之后，需要与产品进行一场需求评审会议。该会议主要是确认需求，了解产品想要做的是什么以及评估需求的合理性。
​	在接到开发任务到进行需求评审会议这段时间，我认为是非常重要的，直接决定了该次迭代你是否能正常完成。
​	首先，必须得认认真真看完需求原型图，了解到自己的开发任务是什么。这一阶段的产出是对对自己负责的相关原型图，任务要非常了解，了解到每一个细节。可以不知道是什么意思，但是得清楚有这个任务，有这个要求。
​	其次，作为一个新手，对系统代码并不是很熟的前提下，需要去看每一个需求相关的代码。这一阶段的产出是需要结合旧的代码，对新需求有一个基本的实现思路，实现方案。此时也大致可以评估出需求是否合理。
​	尽量在正式开需求评审会议的时候，把上面两边走踏实。在上面两个过程中，有什么疑问便可以记录下来，在需求评审会议上提出。需求评审会议过后，需要对原型图，任务彻底的了解。该阶段的产出分别是对需求的彻底了解，包括每一个细节，每一个要求以及每一个需求的大致实现方案。
二：关于方案设计#​	当需求评审过后，就需要做方案设计。一般是通过流程图，时序图，类图来描述一个方案。当然也可以直接用文字。重点是描述清楚，减少沟通成本，让人一目了然。
​	关于方案设计，主要有以下几个部分
1.方案基本的信息，包括版本号，作者，创建时间等
2.目录
3.正文
​	（1）背景&mdash;-需求背景
​	（2）目标（需求的意义）
​	（3）前期准备
​	①需求分析&mdash;-通过需求评审会议，确定有哪些需求（功能点）
​	②技术调研&mdash;-一般可以不写，除非要用到新技术
（4）系统设计
​	①用例图&mdash;一般可以不写
​	②流程设计&mdash;&ndash;指的是调用流程，比如A调用B，B返回什么，然后A再拿这个值包装后，再去调用C，C再返回给A，A显示给前端。主要是展示出步骤流程。
​	③功能设计&mdash;指的是具体实现方案，比如新增什么字段，逻辑如何实现，主要展示出代码的设计&ndash;》可直接映射到代码逻辑
​	④数据模型设计&mdash;数据库的修改
​	⑤接口设计&mdash;新加哪些接口，删除哪些接口，哪些接口被修改等。
（5）性能评估（有哪些性能瓶颈）
（6）业务影响范围评估（对于测试来说很重要，测试要点）
（7）安全性评估
（8）评审意见
三：关于方案评审#方案设计完会开一个评审会议，评估方案的合理性，方案评审完才会进入开发阶段。在该会上，会被多位大佬质疑你的方案，所以需求评审上，一定需要对需求了解透彻，这样才能来回battle。
四：关于代码开发与测试
在代码开发阶段，开发人员在该版本迭代的开发分支上进行开发。本地开发完成后，先在本地进行单元测试，等得到前后端都开发完成后，再push远程仓库，通过jenkins部署项目，进行联调开发环境测试。等到了正式的测试阶段，并发一封提测邮件，里面记录了要提测的分支以及相关要修改的数据库，阿波罗配置等，供测试参考。开发人员需要在此阶段，将开发分支的代码合到测试分支。在正式提测前，开发人员内部会进行开发冒烟测试，主要是将自己负责的部分功能演示一遍，确认功能没问题。
​	以下是各个阶段需要注意的点：
​	在开发阶段，开发环境可能会被占用，生产需要hotfix，开发环境的版本回退到上一版本进行测试，同理测试也是。此时需要注意，不能上开发联调环境部署测试本版本的代码。此时需要注意：尽量先不要上传该版本的代码，避免未经过开发联调测试的代码，被合并到测试环境的分支，导致测试环境的代码出问题，阻塞测试。
​	在测试阶段，当天提交到开发联调环境的代码，必须要在当天测试完毕，确保没问题，否则同事可能会将未经过测试的代码，合并到测试分支（同事修改的代码已经测试过，没问题，需要合并到测试分支，但是该分支上有你未测试的代码）
​	在最后测试封板阶段，或者说在整个测试阶段，都需要检查自己的代码是否合并到测试分支，保证自己的代码能够被测试到以及能够正常上线。（尤其是hotfix阶段的代码，一定要合并到测试分支，否则生产环境会出现问题）" />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://localhost:1313/information/public/docs/%E9%9A%8F%E6%83%B3/%E5%85%B3%E4%BA%8E%E9%9C%80%E6%B1%82%E4%BB%8E%E8%90%BD%E5%9C%B0%E5%88%B0%E5%AE%9E%E7%8E%B0%E7%9A%84%E6%B5%81%E7%A8%8B/" /><meta property="article:section" content="docs" />



<title>关于需求从落地到实现的流程 | 小白不黑</title>
<link rel="manifest" href="/information/public/manifest.json">
<link rel="icon" href="/information/public/favicon.png" >
<link rel="canonical" href="http://localhost:1313/information/public/docs/%E9%9A%8F%E6%83%B3/%E5%85%B3%E4%BA%8E%E9%9C%80%E6%B1%82%E4%BB%8E%E8%90%BD%E5%9C%B0%E5%88%B0%E5%AE%9E%E7%8E%B0%E7%9A%84%E6%B5%81%E7%A8%8B/">
<link rel="stylesheet" href="/information/public/book.min.33a48f5432973b8ff9a82679d9e45d67f2c15d4399bd2829269455cfe390b5e8.css" integrity="sha256-M6SPVDKXO4/5qCZ52eRdZ/LBXUOZvSgpJpRVz&#43;OQteg=" crossorigin="anonymous">
  <script defer src="/information/public/flexsearch.min.js"></script>
  <script defer src="/information/public/en.search.min.239bc1aedac4b8ba3042aed3fdae0ee8eaa443ae93f310744c4abf135918c4ec.js" integrity="sha256-I5vBrtrEuLowQq7T/a4O6OqkQ66T8xB0TEq/E1kYxOw=" crossorigin="anonymous"></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
  
</head>
<body dir="ltr">
  <input type="checkbox" class="hidden toggle" id="menu-control" />
  <input type="checkbox" class="hidden toggle" id="toc-control" />
  <main class="container flex">
    <aside class="book-menu">
      <div class="book-menu-content">
        
  <nav>
<h2 class="book-brand">
  <a class="flex align-center" href="/information/public/"><span>小白不黑</span>
  </a>
</h2>


<div class="book-search">
  <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
  <div class="book-search-spinner hidden"></div>
  <ul id="book-search-results"></ul>
</div>












  



  
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-e03b8728b131eeace3adaee021fbb6e2" class="toggle"  />
    <label for="section-e03b8728b131eeace3adaee021fbb6e2" class="flex justify-between">
      <a role="button" class="">Jdk原生</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/jdk%E5%8E%9F%E7%94%9F/stream%E6%B5%81%E5%A4%84%E7%90%86/" class="">Stream流处理</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/jdk%E5%8E%9F%E7%94%9F/string/" class="">String</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-e40fdba218cca67a07e9df53082e1218" class="toggle"  />
    <label for="section-e40fdba218cca67a07e9df53082e1218" class="flex justify-between">
      <a role="button" class="">Web服务器</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-274443a256e3797fbf61556d5057d50b" class="toggle"  />
    <label for="section-274443a256e3797fbf61556d5057d50b" class="flex justify-between">
      <a role="button" class="">Nginx</a>
    </label>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-17917abd9886b33b949a0bf4d7edc54c" class="toggle"  />
    <label for="section-17917abd9886b33b949a0bf4d7edc54c" class="flex justify-between">
      <a role="button" class="">Tomcat</a>
    </label>
  

          
  <ul>
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-3dfe1030abf564fbadaffac49be0a17f" class="toggle"  />
    <label for="section-3dfe1030abf564fbadaffac49be0a17f" class="flex justify-between">
      <a role="button" class="">云计算</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E4%BA%91%E8%AE%A1%E7%AE%97/%E4%BA%91%E8%AE%A1%E7%AE%97%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5/" class="">云计算基本概念</a>
  

        </li>
      
    
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-35ef217d212df8f7f126510047a2ffcd" class="toggle"  />
    <label for="section-35ef217d212df8f7f126510047a2ffcd" class="flex justify-between">
      <a role="button" class="">其他</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%85%B6%E4%BB%96/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/" class="">正则表达式</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-7ddc46bf680b6bb569bc10c6dd5300bb" class="toggle"  />
    <label for="section-7ddc46bf680b6bb569bc10c6dd5300bb" class="flex justify-between">
      <a role="button" class="">安全相关</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-0b06b6466894f0da13f8f36407b21a00" class="toggle"  />
    <label for="section-0b06b6466894f0da13f8f36407b21a00" class="flex justify-between">
      <a role="button" class="">Redos漏洞</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%AE%89%E5%85%A8%E7%9B%B8%E5%85%B3/redos%E6%BC%8F%E6%B4%9E/%E8%AF%B4%E6%98%8E/" class="">说明</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-90325a98074701364880fd0a253c99d5" class="toggle"  />
    <label for="section-90325a98074701364880fd0a253c99d5" class="flex justify-between">
      <a role="button" class="">加密</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%AE%89%E5%85%A8%E7%9B%B8%E5%85%B3/%E5%8A%A0%E5%AF%86/md5/" class="">Md5</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-d1da7c8c3cf353ba4d0cb95ee867d81a" class="toggle"  />
    <label for="section-d1da7c8c3cf353ba4d0cb95ee867d81a" class="flex justify-between">
      <a role="button" class="">日志脱敏</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%AE%89%E5%85%A8%E7%9B%B8%E5%85%B3/%E6%97%A5%E5%BF%97%E8%84%B1%E6%95%8F/%E8%84%B1%E6%95%8F%E6%96%B9%E6%A1%88/" class="">脱敏方案</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-f01c435c76271a7a187f8eeb9d6daa46" class="toggle"  />
    <label for="section-f01c435c76271a7a187f8eeb9d6daa46" class="flex justify-between">
      <a role="button" class="">证书密钥</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%AE%89%E5%85%A8%E7%9B%B8%E5%85%B3/%E8%AF%81%E4%B9%A6%E5%AF%86%E9%92%A5/keytool/" class="">Keytool</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%AE%89%E5%85%A8%E7%9B%B8%E5%85%B3/%E8%AF%81%E4%B9%A6%E5%AF%86%E9%92%A5/%E5%85%B3%E4%BA%8E%E6%95%B0%E5%AD%97%E8%AF%81%E4%B9%A6/" class="">关于数字证书</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-78827b033d230a0c162f465f09a45d34" class="toggle"  />
    <label for="section-78827b033d230a0c162f465f09a45d34" class="flex justify-between">
      <a role="button" class="">微服务</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-9c3c167311c882339be0f2529b4722b9" class="toggle"  />
    <label for="section-9c3c167311c882339be0f2529b4722b9" class="flex justify-between">
      <a role="button" class="">中间件</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-bc5de2dc313f1aaa64d3f3e1d4eb8925" class="toggle"  />
    <label for="section-bc5de2dc313f1aaa64d3f3e1d4eb8925" class="flex justify-between">
      <a role="button" class="">Rpc中间件</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-760e4141db4344053b65d340ff2f3661" class="toggle"  />
    <label for="section-760e4141db4344053b65d340ff2f3661" class="flex justify-between">
      <a role="button" class="">Dubbo</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E4%B8%AD%E9%97%B4%E4%BB%B6/rpc%E4%B8%AD%E9%97%B4%E4%BB%B6/dubbo/dubbo%E6%8B%A6%E6%88%AA%E5%99%A8/" class="">Dubbo拦截器</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-e82ef185891826377b9cd0983696be44" class="toggle"  />
    <label for="section-e82ef185891826377b9cd0983696be44" class="flex justify-between">
      <a role="button" class="">分布式协调服务中间件</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-636027efa9d542b0e89ce07013ac0f04" class="toggle"  />
    <label for="section-636027efa9d542b0e89ce07013ac0f04" class="flex justify-between">
      <a role="button" class="">Zookeeper</a>
    </label>
  

          
  <ul>
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-deb73193e734b23d0a3274f88261dcb8" class="toggle"  />
    <label for="section-deb73193e734b23d0a3274f88261dcb8" class="flex justify-between">
      <a role="button" class="">消息中间件</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-6501196988605bbfffd3ba7ecc37c7ca" class="toggle"  />
    <label for="section-6501196988605bbfffd3ba7ecc37c7ca" class="flex justify-between">
      <a role="button" class="">Kafka</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/kafka/kafka%E6%9E%B6%E6%9E%84%E6%A8%A1%E5%9E%8B/" class="">Kafka架构模型</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/kafka/kafka%E7%9A%84%E6%B6%88%E6%81%AF%E5%AD%98%E5%82%A8%E7%BB%93%E6%9E%84/" class="">Kafka的消息存储结构</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/kafka/kafka%E7%BB%84%E4%BB%B6%E8%AF%B4%E6%98%8E/" class="">Kafka组件说明</a>
  

        </li>
      
    
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/kafka/%E6%B6%88%E6%81%AF%E5%8F%AF%E9%9D%A0%E6%80%A7%E4%BF%9D%E8%AF%81/" class="">消息可靠性保证</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-c6610ca1dca1f02b4ea2ef58834d3b9e" class="toggle"  />
    <label for="section-c6610ca1dca1f02b4ea2ef58834d3b9e" class="flex justify-between">
      <a role="button" class="">缓存中间件</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-e21697bb560eb834cd67ab4f90b97c01" class="toggle"  />
    <label for="section-e21697bb560eb834cd67ab4f90b97c01" class="flex justify-between">
      <a role="button" class="">Redis</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E7%BC%93%E5%AD%98%E4%B8%AD%E9%97%B4%E4%BB%B6/redis/redis%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/" class="">Redis数据结构</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E7%BC%93%E5%AD%98%E4%B8%AD%E9%97%B4%E4%BB%B6/redis/redis%E7%9A%84%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF/" class="">Redis的使用场景</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-5df0e0cacbab4ce1da881f03f4d995d7" class="toggle"  />
    <label for="section-5df0e0cacbab4ce1da881f03f4d995d7" class="flex justify-between">
      <a role="button" class="">微服务架构</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84/%E6%A8%A1%E5%9D%97%E8%AE%BE%E8%AE%A1/" class="">模块设计</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-607dd6f4c673d54dd39e72765ef574d6" class="toggle"  />
    <label for="section-607dd6f4c673d54dd39e72765ef574d6" class="flex justify-between">
      <a role="button" class="">性能</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-4dcd8dcfe08064eb4e3599f6c854acfe" class="toggle"  />
    <label for="section-4dcd8dcfe08064eb4e3599f6c854acfe" class="flex justify-between">
      <a role="button" class="">性能指标</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%80%A7%E8%83%BD/%E6%80%A7%E8%83%BD%E6%8C%87%E6%A0%87/%E6%80%A7%E8%83%BD%E6%8C%87%E6%A0%87/" class="">性能指标</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-c1cb4170f65a623877e16ed1e247a255" class="toggle"  />
    <label for="section-c1cb4170f65a623877e16ed1e247a255" class="flex justify-between">
      <a role="button" class="">操作系统</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-1726a4f2c29014a9b62b8229d726a9c7" class="toggle"  />
    <label for="section-1726a4f2c29014a9b62b8229d726a9c7" class="flex justify-between">
      <a role="button" class="">Linux系统</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/linux%E7%B3%BB%E7%BB%9F/%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/" class="">常用命令</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-d6bf821eb6d414043ecca879804a889c" class="toggle"  />
    <label for="section-d6bf821eb6d414043ecca879804a889c" class="flex justify-between">
      <a role="button" class="">Windows系统</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/windows%E7%B3%BB%E7%BB%9F/bat%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/" class="">Bat常用命令</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-7b25a9d57f745dac7025d8935c0dd6d6" class="toggle"  />
    <label for="section-7b25a9d57f745dac7025d8935c0dd6d6" class="flex justify-between">
      <a role="button" class="">安卓系统</a>
    </label>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-b6450c19685e6ac9ff6b0b7c5cdd1af0" class="toggle"  />
    <label for="section-b6450c19685e6ac9ff6b0b7c5cdd1af0" class="flex justify-between">
      <a role="button" class="">鸿蒙系统</a>
    </label>
  

          
  <ul>
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-da0cce6ed9e2ebdccdccb46bc84eb6ed" class="toggle"  />
    <label for="section-da0cce6ed9e2ebdccdccb46bc84eb6ed" class="flex justify-between">
      <a role="button" class="">数据库</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-cef3f1dfbcd3958a4bdcd8bddbd9b0e6" class="toggle"  />
    <label for="section-cef3f1dfbcd3958a4bdcd8bddbd9b0e6" class="flex justify-between">
      <a role="button" class="">Mysql</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/mysql%E4%BC%98%E5%8C%96/" class="">My Sql优化</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/sql%E5%87%BD%E6%95%B0/" class="">Sql函数</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/sql%E6%9F%A5%E8%AF%A2/" class="">Sql查询</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B/" class="">存储过程</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/%E9%94%81%E7%9B%B8%E5%85%B3/" class="">锁相关</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-caa1421f47d590dafd0cd7ba82594a3e" class="toggle"  />
    <label for="section-caa1421f47d590dafd0cd7ba82594a3e" class="flex justify-between">
      <a role="button" class="">Obs</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%95%B0%E6%8D%AE%E5%BA%93/obs/obs%E4%BB%8B%E7%BB%8D/" class="">Obs介绍</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-899ab72702f86e97de2ef9e34b57e6df" class="toggle"  />
    <label for="section-899ab72702f86e97de2ef9e34b57e6df" class="flex justify-between">
      <a role="button" class="">框架</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-844c721eedb146bd96850eabc84ec824" class="toggle"  />
    <label for="section-844c721eedb146bd96850eabc84ec824" class="flex justify-between">
      <a role="button" class="">Logback</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%A1%86%E6%9E%B6/logback/%E9%93%BE%E8%B7%AF%E8%B7%9F%E8%B8%AA/" class="">链路跟踪</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-f24d4c501fe67784f3fb93310a264e87" class="toggle"  />
    <label for="section-f24d4c501fe67784f3fb93310a264e87" class="flex justify-between">
      <a role="button" class="">My Batis</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%A1%86%E6%9E%B6/mybatis/mybatis/" class="">My Batis</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%A1%86%E6%9E%B6/mybatis/mybatis-plus/" class="">My Batis Plus</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-c87bd7e8a1ff6cfa0af3531a2e64a250" class="toggle"  />
    <label for="section-c87bd7e8a1ff6cfa0af3531a2e64a250" class="flex justify-between">
      <a role="button" class="">Spring生态</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%A1%86%E6%9E%B6/spring%E7%94%9F%E6%80%81/spring%E6%A1%86%E6%9E%B6/spring%E4%BA%8B%E5%8A%A1/" class="">Spring事务</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-49d6e82ce8262685ff4b61bdeeb7ab2b" class="toggle"  />
    <label for="section-49d6e82ce8262685ff4b61bdeeb7ab2b" class="flex justify-between">
      <a role="button" class="">源码阅读</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB/tomcat/%E6%9E%B6%E6%9E%84/" class="">架构</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB/tomcat/%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/" class="">源码解析</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-a8655c41d6bd4e2cd795be8edc8487ea" class="toggle"  />
    <label for="section-a8655c41d6bd4e2cd795be8edc8487ea" class="flex justify-between">
      <a role="button" class="">网络通信</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1/httpclient%E5%8E%9F%E7%90%86/" class="">HTTP Client原理</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-702c4336f7edbbe316232a01ba26bf1a" class="toggle"  />
    <label for="section-702c4336f7edbbe316232a01ba26bf1a" class="flex justify-between">
      <a role="button" class="">Netty</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1/netty/netty%E5%8A%A0%E5%AF%86%E9%80%9A%E4%BF%A1/" class="">Netty加密通信</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1/netty/%E7%BB%84%E4%BB%B6%E4%BB%8B%E7%BB%8D/" class="">组件介绍</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-172c0280d72476b38f60281496fe5a12" class="toggle"  />
    <label for="section-172c0280d72476b38f60281496fe5a12" class="flex justify-between">
      <a role="button" class="">计算机网络知识</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E7%9F%A5%E8%AF%86/%E5%86%85%E7%BD%91%E8%8C%83%E5%9B%B4/" class="">内网范围</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-35d51e6393d8505594aceee6154f609d" class="toggle"  />
    <label for="section-35d51e6393d8505594aceee6154f609d" class="flex justify-between">
      <a role="button" class="">虚拟化</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E8%99%9A%E6%8B%9F%E5%8C%96/%E4%B8%80%E4%BA%9B%E6%A6%82%E5%BF%B5/" class="">一些概念</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-af6faafd3959904a690924dc37e37ba3" class="toggle"  />
    <label for="section-af6faafd3959904a690924dc37e37ba3" class="flex justify-between">
      <a role="button" class="">设计模式</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E6%9E%84%E5%BB%BA%E8%80%85%E6%A8%A1%E5%BC%8F/" class="">构建者模式</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F/" class="">策略模式</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-0559e84be42d6e9105d08b30db8452f5" class="toggle"  />
    <label for="section-0559e84be42d6e9105d08b30db8452f5" class="flex justify-between">
      <a role="button" class="">运维</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-040c9d5f9ffc134e7ce28abbbd637ab2" class="toggle"  />
    <label for="section-040c9d5f9ffc134e7ce28abbbd637ab2" class="flex justify-between">
      <a role="button" class="">K8s&amp;docker</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E8%BF%90%E7%BB%B4/k8sdocker/%E9%95%9C%E5%83%8F%E9%83%A8%E7%BD%B2/" class="">镜像部署</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E8%BF%90%E7%BB%B4/k8sdocker/%E7%9B%B8%E5%85%B3%E5%91%BD%E4%BB%A4/" class="">相关命令</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-d5deec5b7f5c54da3ce283bd167f14b7" class="toggle" checked />
    <label for="section-d5deec5b7f5c54da3ce283bd167f14b7" class="flex justify-between">
      <a role="button" class="">随想</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E9%9A%8F%E6%83%B3/%E5%85%B3%E4%BA%8E%E5%81%9A%E4%BA%8B/" class="">关于做事</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E9%9A%8F%E6%83%B3/%E5%85%B3%E4%BA%8E%E5%85%A8%E5%B1%80%E6%80%A7%E4%BF%AE%E6%94%B9/" class="">关于全局性修改</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E9%9A%8F%E6%83%B3/%E5%85%B3%E4%BA%8E%E8%A7%A3%E8%80%A6/" class="">关于解耦</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E9%9A%8F%E6%83%B3/%E5%85%B3%E4%BA%8E%E9%9C%80%E6%B1%82%E4%BB%8E%E8%90%BD%E5%9C%B0%E5%88%B0%E5%AE%9E%E7%8E%B0%E7%9A%84%E6%B5%81%E7%A8%8B/" class="active">关于需求从落地到实现的流程</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E9%9A%8F%E6%83%B3/%E6%97%A0%E6%A0%87%E9%A2%98/" class="">无标题</a>
  

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="/information/public/docs/%E9%9A%8F%E6%83%B3/%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E5%BF%83%E5%BE%97/" class="">问题解决心得</a>
  

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-6c4d1e5fc6d4b822bcfdabbbded8c403" class="toggle"  />
    <label for="section-6c4d1e5fc6d4b822bcfdabbbded8c403" class="flex justify-between">
      <a role="button" class="">音视频</a>
    </label>
  

          
  <ul>
    
  </ul>

        </li>
      
    
  </ul>















</nav>




  <script>(function(){var e=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(){localStorage.setItem("menu.scrollTop",e.scrollTop)}),e.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>


 
      </div>
    </aside>

    <div class="book-page">
      <header class="book-header">
        
  <div class="flex align-center justify-between">
  <label for="menu-control">
    <img src="/information/public/svg/menu.svg" class="book-icon" alt="Menu" />
  </label>

  <strong>关于需求从落地到实现的流程</strong>

  <label for="toc-control">
    
    <img src="/information/public/svg/toc.svg" class="book-icon" alt="Table of Contents" />
    
  </label>
</div>


  
  <aside class="hidden clearfix">
    
  
<nav id="TableOfContents">
  <ul>
    <li>
      <ul>
        <li><a href="#一关于需求评审">一：关于需求评审</a></li>
        <li><a href="#二关于方案设计">二：关于方案设计</a></li>
        <li><a href="#三关于方案评审">三：关于方案评审</a></li>
      </ul>
    </li>
  </ul>
</nav>



  </aside>
  
 
      </header>

      
      
  <article class="markdown book-article"><h3 id="一关于需求评审">
  一：关于需求评审
  <a class="anchor" href="#%e4%b8%80%e5%85%b3%e4%ba%8e%e9%9c%80%e6%b1%82%e8%af%84%e5%ae%a1">#</a>
</h3>
<p>​	产品首先会接到一些需求，或者自己提一些需求，然后与技术主管开会，将需求派发给对应的开发人员。最终以文档的形式记录需求的生命周期（Excel），包括计划开发开始时间，完成时间，需求的状态，负责人，任务说明等。开发人员自己根据实际的开发进度去更新该记录表。</p>
<p>​	开发人员在确认自己的开发任务之后，需要与产品进行一场需求评审会议。该会议主要是确认需求，了解产品想要做的是什么以及评估需求的合理性。</p>
<p>​	在接到开发任务到进行需求评审会议这段时间，我认为是非常重要的，直接决定了该次迭代你是否能正常完成。</p>
<p>​	首先，必须得认认真真看完需求原型图，了解到自己的开发任务是什么。这一阶段的产出是对对自己负责的相关原型图，任务要非常了解，了解到每一个细节。可以不知道是什么意思，但是得清楚有这个任务，有这个要求。</p>
<p>​	其次，作为一个新手，对系统代码并不是很熟的前提下，需要去看每一个需求相关的代码。这一阶段的产出是需要结合旧的代码，对新需求有一个基本的实现思路，实现方案。此时也大致可以评估出需求是否合理。</p>
<p>​	尽量在正式开需求评审会议的时候，把上面两边走踏实。在上面两个过程中，有什么疑问便可以记录下来，在需求评审会议上提出。需求评审会议过后，需要对原型图，任务彻底的了解。该阶段的产出分别是对需求的彻底了解，包括每一个细节，每一个要求以及每一个需求的大致实现方案。</p>
<h3 id="二关于方案设计">
  二：关于方案设计
  <a class="anchor" href="#%e4%ba%8c%e5%85%b3%e4%ba%8e%e6%96%b9%e6%a1%88%e8%ae%be%e8%ae%a1">#</a>
</h3>
<p>​	当需求评审过后，就需要做方案设计。一般是通过流程图，时序图，类图来描述一个方案。当然也可以直接用文字。重点是描述清楚，减少沟通成本，让人一目了然。</p>
<p>​	关于方案设计，主要有以下几个部分</p>
<p><strong>1.方案基本的信息，包括版本号，作者，创建时间等</strong></p>
<p>2.目录</p>
<p>3.正文</p>
<p>​	<strong>（1）背景&mdash;-需求背景</strong></p>
<p>​	<strong>（2）目标（需求的意义）</strong></p>
<p>​	（3）前期准备</p>
<p>​		<strong>①需求分析&mdash;-通过需求评审会议，确定有哪些需求（功能点）</strong></p>
<p>​		②技术调研&mdash;-一般可以不写，除非要用到新技术</p>
<p>（4）系统设计</p>
<p>​	①用例图&mdash;一般可以不写</p>
<p>​	<strong>②流程设计&mdash;&ndash;指的是调用流程，比如A调用B，B返回什么，然后A再拿这个值包装后，再去调用C，C再返回给A，A显示给前端。主要是展示出步骤流程。</strong></p>
<p>​	<strong>③功能设计&mdash;指的是具体实现方案，比如新增什么字段，逻辑如何实现，主要展示出代码的设计&ndash;》可直接映射到代码逻辑</strong></p>
<p>​	<strong>④数据模型设计&mdash;数据库的修改</strong></p>
<p>​	<strong>⑤接口设计&mdash;新加哪些接口，删除哪些接口，哪些接口被修改等。</strong></p>
<p>（5）性能评估（有哪些性能瓶颈）</p>
<p><strong>（6）业务影响范围评估（对于测试来说很重要，测试要点）</strong></p>
<p>（7）安全性评估</p>
<p>（8）评审意见</p>
<h3 id="三关于方案评审">
  三：关于方案评审
  <a class="anchor" href="#%e4%b8%89%e5%85%b3%e4%ba%8e%e6%96%b9%e6%a1%88%e8%af%84%e5%ae%a1">#</a>
</h3>
<p>方案设计完会开一个评审会议，评估方案的合理性，方案评审完才会进入开发阶段。在该会上，会被多位大佬质疑你的方案，所以需求评审上，一定需要对需求了解透彻，这样才能来回battle。</p>
<p>四：关于代码开发与测试</p>
<p>在代码开发阶段，开发人员在该版本迭代的开发分支上进行开发。本地开发完成后，先在本地进行单元测试，等得到前后端都开发完成后，再push远程仓库，通过jenkins部署项目，进行联调开发环境测试。等到了正式的测试阶段，并发一封提测邮件，里面记录了要提测的分支以及相关要修改的数据库，阿波罗配置等，供测试参考。开发人员需要在此阶段，将开发分支的代码合到测试分支。在正式提测前，开发人员内部会进行开发冒烟测试，主要是将自己负责的部分功能演示一遍，确认功能没问题。</p>
<p>​	以下是各个阶段需要注意的点：</p>
<p>​	在开发阶段，开发环境可能会被占用，生产需要hotfix，开发环境的版本回退到上一版本进行测试，同理测试也是。此时需要注意，不能上开发联调环境部署测试本版本的代码。此时需要注意：尽量先不要上传该版本的代码，避免未经过开发联调测试的代码，被合并到测试环境的分支，导致测试环境的代码出问题，阻塞测试。</p>
<p>​	在测试阶段，当天提交到开发联调环境的代码，必须要在当天测试完毕，确保没问题，否则同事可能会将未经过测试的代码，合并到测试分支（同事修改的代码已经测试过，没问题，需要合并到测试分支，但是该分支上有你未测试的代码）</p>
<p>​	在最后测试封板阶段，或者说在整个测试阶段，都需要检查自己的代码是否合并到测试分支，保证自己的代码能够被测试到以及能够正常上线。（尤其是hotfix阶段的代码，一定要合并到测试分支，否则生产环境会出现问题）</p>
</article>
 
      

      <footer class="book-footer">
        
  <div class="flex flex-wrap justify-between">





</div>



  <script>(function(){function e(e){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}document.querySelectorAll("pre code").forEach(t=>{t.addEventListener("click",function(){if(window.getSelection().toString())return;e(t.parentElement),navigator.clipboard&&navigator.clipboard.writeText(t.parentElement.textContent)})})})()</script>


 
        
      </footer>

      
  
  <div class="book-comments">

</div>
  
 

      <label for="menu-control" class="hidden book-menu-overlay"></label>
    </div>

    
    <aside class="book-toc">
      <div class="book-toc-content">
        
  
<nav id="TableOfContents">
  <ul>
    <li>
      <ul>
        <li><a href="#一关于需求评审">一：关于需求评审</a></li>
        <li><a href="#二关于方案设计">二：关于方案设计</a></li>
        <li><a href="#三关于方案评审">三：关于方案评审</a></li>
      </ul>
    </li>
  </ul>
</nav>


 
      </div>
    </aside>
    
  </main>

  
</body>
</html>












